#include <memory>
#include <iostream>

class Data {
public:
    void modify() { std::cout << "Data modified.\n"; }
};

int main() {
    std::shared_ptr<const Data> constDataPtr = std::make_shared<Data>();
    
    // 尝试修改数据将导致编译错误：constDataPtr->modify();

    // 使用 const_pointer_cast 移除 const
    std::shared_ptr<Data> modifiableDataPtr = std::const_pointer_cast<Data>(constDataPtr);
    modifiableDataPtr->modify();  // 现在可以调用 modify()

    return 0;
}